#include "iwdt.h"
#include "iwdt_weakup.h"



void iwdt_weakup_init(void)
{
    stc_iwdt_init_t stcIwdtInit = {0};

    ///< 开启WDT外设时钟
    SYSCTRL_PeriphClkEnable(SYSCTRL_PERICLK_IWDT);

    ///< IWDT 初始化
    ///< IWDT 溢出时间 = (计数值(u32ArrCounter)/32800) * 分频系数(u32Prescaler)
    ///< 本例为：(3280/32800)*32 = 3.2s
    stcIwdtInit.u32Action = IWDT_OVER_INT__SLEEPMODE_RUN; //休眠模式下IWD继续运行，溢出后产生中断
    stcIwdtInit.u32ArrCounter = 164;  //溢出时间20ms
    stcIwdtInit.u32Window     = 0xFFF;
    stcIwdtInit.u32Prescaler  = IWDT_RC10K_DIV_4;
    IWDT_Init(&stcIwdtInit);
    
    ///< 开启NVIC中断
    EnableNvic(IWDT_WWDT_IRQn, IrqLevel3, TRUE);
	
	 ///< 启动 WDT
    IWDT_Start();
}

///< IWDT 中断服务程序
void Iwdt_IRQHandler(void)
{
    if(IWDT_GetOverFlag())
    {
        IWDT_ClearOverFlag();       ///<清除 IWDT 中断标记
    }
}
